package cn.tedu.charging.device.controller;

import cn.tedu.charging.common.pojo.JsonResult;
import cn.tedu.charging.common.pojo.param.UpdateGunStatusParam;
import cn.tedu.charging.device.pojo.vo.StationVO;
import cn.tedu.charging.device.service.DeviceService;
import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j//日志
@RestController//Restful风格的控制器
@RequestMapping("/device")// 设备模块的请求路径
public class DeviceController {
    @Autowired
    private DeviceService deviceService;
    /**
     * 查询附近的充电站
     * @return 充电站列表
     * 入参 longitude 经度 latitude 纬度 distance 距离
     * 出参 充电站的列表 多个充电站
     */
    @GetMapping("/station/near")
    public JsonResult<List<StationVO>> nearStation(Double longitude, Double latitude, Double distance){
        log.debug("控制层-Controller 查询附近的充电站 经度；{},纬度:{},距离:{}",longitude,latitude,distance);
        List<StationVO> stationVOS = deviceService.nearStation(longitude, latitude, distance);
        //结果封装
        JsonResult<List<StationVO>> result = JsonResult.ok(stationVOS);
        log.debug("控制层-Controller 查询附近的充电站-结束、出参:{}",result);
        return result;
    }
    /**
     * 充电站的详情
     * 入参 stationId
     * 出参 充电站的详情
     */
    @GetMapping("/station/detail/{stationId}")
    public JsonResult<StationVO> detail(@PathVariable("stationId") Integer stationId){
        log.debug("控制层-Controller 充电站的详情,入参:{}",stationId);
        //记录开始时间
        Long startTime = System.currentTimeMillis();
        log.debug("查询充电站的详情,开始时间:{}",startTime);
        StationVO stationVO = deviceService.stationDetailById(stationId);
        //记录结束
        Long endTime = System.currentTimeMillis();
        //消耗时间
        Long costTime = endTime - startTime;
        log.debug("查询充电站的详情,开始时间:{},结束时间:{},总耗时:{}",startTime,endTime,costTime);

        JsonResult<StationVO> result = JsonResult.ok(stationVO);
        log.debug("控制层-Controller 充电站的详情,出参:{}",result);
        return result;
    }
    /*
    *更新抢的状态
     */
    @PostMapping("/gun/update/status")
    public JsonResult<Boolean> updateGunStatus(@RequestBody UpdateGunStatusParam updateGunStatusParam){
        log.debug("更新抢的状态,入参:{}", updateGunStatusParam);
        Boolean result=deviceService.updateGunStatus(updateGunStatusParam);
        JsonResult ok = JsonResult.ok(result);
        log.debug("更新抢的状态,入参:{},出参:{}", updateGunStatusParam,ok);
        return ok;
    }
}
